#ifndef __FRAME_INCLUDE
#define __FRAME_INCLUDE

#include <cstdlib>
#include <cstdio>
#include <iostream>

using namespace std;

/** Class representing a single frame of memory. */
class Activation_Frame {
	
	public:
		/** Empty constructor, only used for stack initialization */
		Activation_Frame();
		
		/**
		  Default constructor that requires all values
			Parameters:
				functionName - the name of the function 
				functionAddress - the entry point of the function
				returnAddress - the return address 
		*/		
		Activation_Frame(string,string,int);		
		
		/** 
			Writes the frame to the specified output stream.
			Parameters:
				os - the output stream to write to
				book - the frame to write to the stream
		*/
		friend ostream& operator<<(ostream&, const Activation_Frame&);
	private:
		/** The name of the function */
		string functionName;
		/** The address of the function */
		string functionAddress;
		/** The return address */
		int returnAddress;
};

#endif